package com.yzh.luckydraw.infrastructure.dao;

import com.yzh.dbrouter.annotation.DBRouter;
import com.yzh.dbrouter.annotation.DBRouterStrategy;
import com.yzh.luckydraw.infrastructure.po.UserStrategyExport;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 用户策略计算结果表
 */
@Mapper
@DBRouterStrategy(splitTable = true)
public interface IUserStrategyExportDao {
    /**
     * 新增数据
     * @param userStrategyExport
     */
    @DBRouter(key = "uId")
    void insert(UserStrategyExport userStrategyExport);

    /**
     * 查询数据
     * @param uId
     * @return
     */
    @DBRouter
    UserStrategyExport queryUserStrategyExportByUId(String uId);

    /**
     * 更新发奖状态
     * @param userStrategyExport
     */
    @DBRouter
    void updateUserAwardState(UserStrategyExport userStrategyExport);

    /**
     * 更新MQ发送状态
     * @param userStrategyExport
     */
    @DBRouter
    void updateInvoiceMqState(UserStrategyExport userStrategyExport);

    /**
     * 扫描发货单 MQ 状态，把未发送 MQ 的单子扫描出来，做补偿
     * 这里使用了手动设置分库分表
     * @return
     */
    List<UserStrategyExport> scanInvoiceMqState();
}
